A rank filter is a non-linear filter used in signal processing, such as image processing for noise removal, image enhancement and morphological operations. The use of rank filters such as a median filter is important for removing impulsive and Non-Gaussian noise from an image. However, it often costs high computations and hardware area. When the filter kernel size is increased, the complexity increases dramatically, and these are not practical for the Internet of Things (IoT)/Wearable products.
Rank filters are usually categorized based on the algorithm they employ as either word-level algorithms or bit-level algorithms. The word-level algorithms require the use of complex sorting algorithms such as bubble sort, selection sort, merge sort, quick sort, odd-even transposition sort to derive the element in the specified rank. The bit-level algorithms are much more suitable for hardware, and are simpler to derive combinational functions on binary variables.
Many implementations of bit-level rank filtering are implemented in hardware. These implementations include bit-pipeline rank filters that receive input data samples with a certain number of bits each and produce a single bit of output in each pipeline stage. These single bits are accumulated in order to produce an output result each clock cycle independent of the number of input data samples. The conventional pipelined methods do not provide scalability in that the number of stages in the pipeline is fixed and cannot be changed dynamically. Thus, previous rank filter implementations are fixed in their hardware architecture and not scalable for different hardware area or power budget.